package com.minimalist.common.entity.lindi.vo.subsidyapplicationpaynotice;

import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.minimalist.common.config.mybatis.bo.PageReq;
import io.swagger.v3.oas.annotations.media.Schema;

import java.io.Serial;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Objects;

/**
 * 林地指标交易平台_补贴申请交易通知查询VO
 *
 * @author 11987
 * @since 2025-01-06
 */
@Schema(name = "林地指标交易平台_补贴申请交易通知查询实体")
public class LindiSubsidyApplicationPayNoticeQueryVO extends PageReq implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(name = "subsidyApplicationId", description = "补贴申请ID", type = "string")
    private Long subsidyApplicationId;

    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(name = "subsidyApplicationPayNoticeId", description = "支付通知ID", type = "string")
    private Long subsidyApplicationPayNoticeId;

    @Schema(name = "noticeDate", description = "通知时间", type = "string")
    @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
    private Timestamp noticeDate;

    @Schema(name = "startDate", description = "开始时间", type = "string")
    @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
    private Timestamp startDate;

    @Schema(name = "endDate", description = "结束时间", type = "string")
    @JsonFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
    private Timestamp endDate;

    @Schema(name = "payTitle", description = "支付通知标题", type = "string")
    private String payTitle;

    @Schema(name = "payExplain", description = "支付说明", type = "string")
    private String payExplain;

    public LindiSubsidyApplicationPayNoticeQueryVO() {
        super();
    }

    public LindiSubsidyApplicationPayNoticeQueryVO(Long subsidyApplicationId, Long subsidyApplicationPayNoticeId, Timestamp noticeDate, Timestamp startDate, Timestamp endDate, String payTitle, String payExplain) {
        this.subsidyApplicationId = subsidyApplicationId;
        this.subsidyApplicationPayNoticeId = subsidyApplicationPayNoticeId;
        this.noticeDate = noticeDate;
        this.startDate = startDate;
        this.endDate = endDate;
        this.payTitle = payTitle;
        this.payExplain = payExplain;
    }

    public Long getSubsidyApplicationId() {
        return subsidyApplicationId;
    }

    public void setSubsidyApplicationId(Long subsidyApplicationId) {
        this.subsidyApplicationId = subsidyApplicationId;
    }

    public Long getSubsidyApplicationPayNoticeId() {
        return subsidyApplicationPayNoticeId;
    }

    public void setSubsidyApplicationPayNoticeId(Long subsidyApplicationPayNoticeId) {
        this.subsidyApplicationPayNoticeId = subsidyApplicationPayNoticeId;
    }

    public Timestamp getNoticeDate() {
        return noticeDate;
    }

    public void setNoticeDate(Timestamp noticeDate) {
        this.noticeDate = noticeDate;
    }

    public Timestamp getStartDate() {
        return startDate;
    }

    public void setStartDate(Timestamp startDate) {
        this.startDate = startDate;
    }

    public Timestamp getEndDate() {
        return endDate;
    }

    public void setEndDate(Timestamp endDate) {
        this.endDate = endDate;
    }

    public String getPayTitle() {
        return payTitle;
    }

    public void setPayTitle(String payTitle) {
        this.payTitle = payTitle;
    }

    public String getPayExplain() {
        return payExplain;
    }

    public void setPayExplain(String payExplain) {
        this.payExplain = payExplain;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        LindiSubsidyApplicationPayNoticeQueryVO that = (LindiSubsidyApplicationPayNoticeQueryVO) o;
        return Objects.equals(subsidyApplicationId, that.subsidyApplicationId) && Objects.equals(subsidyApplicationPayNoticeId, that.subsidyApplicationPayNoticeId) && Objects.equals(noticeDate, that.noticeDate) && Objects.equals(startDate, that.startDate) && Objects.equals(endDate, that.endDate) && Objects.equals(payTitle, that.payTitle) && Objects.equals(payExplain, that.payExplain);
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), subsidyApplicationId, subsidyApplicationPayNoticeId, noticeDate, startDate, endDate, payTitle, payExplain);
    }

    @Override
    public String toString() {
        return "LindiSubsidyApplicationPayNoticeQueryVO{" +
               "subsidyApplicationId=" + subsidyApplicationId +
               ", subsidyApplicationPayNoticeId=" + subsidyApplicationPayNoticeId +
               ", noticeDate=" + noticeDate +
               ", startDate=" + startDate +
               ", endDate=" + endDate +
               ", payTitle='" + payTitle + '\'' +
               ", payExplain='" + payExplain + '\'' +
               '}';
    }
}